Ordinarily, computer software development involves an iterative process of coding and debugging followed by correction of any detected "bugs." Debugging helps to identify syntax and semantic errors. Syntax errors are the result of an incorrect expression of the programming language and prevent the execution of the program. Semantic errors result from the inappropriate but syntactically correct expression of the programming language and cause undesirable dynamic behavior during program execution. Static debugging can be used to detect syntax errors while a combination of static and dynamic debugging can be used to help detect semantic errors.
The same debugging tools and techniques used for traditional control flow-oriented programming languages can be applied to object-oriented languages (OOLs). Static debugging tools typically operate on the program source code prior to compilation and include source code verifiers and the compiler itself. Dynamic debugging tools operate in conjunction with the execution of the program either through modification of the source code or as an adjunct stand-alone program operating to monitor program execution or to process a trace file after execution terminates.
However, distributed interacting software components written in an OOL, such as Java.TM. language applets and components written for the JavaBeans.TM. application programming interface (API) and Active-X.TM. components, can be difficult to debug using these conventional debugging approaches for several reasons. First, the nature of OOL components implies that little or nothing may be known about the internal workings of each component. Second, different components may have been written independently and at different times by separate and geographically distributed development teams among whom interaction may be impracticable or impossible. Moreover, interacting components can be located across distributed locations and organizations and only limited knowledge may be available about interacting components with little known other than their respective origins. The JavaBeans.TM. API is described in P. van der Linden, "Just Java," pp. 345-347, SunSoft Press (1997), the disclosure of which is incorporated herein by reference. Java.TM. and JavaBeans.TM. are trademarks of Sun Microsystems, Inc., Mountain View, Calif. Active-X.TM. is a trademark of Microsoft Corporation, Redmond, Wash. The general problems associated with software debugging visualization tools are described in R. Baecker et al., "Software Visualization for Debugging," Comm. of the ACM, pp. 44-54, Vol. 40, No. 4 (Apr. 1997), the disclosure of which is incorporated herein by reference.
One prior art approach to debugging involves introducing debug statements in the source code for generating diagnostic output messages during program execution. However, debug statements are generally limited to outputting plain text and therefore lack the user-friendly presentation of a graphical user interface (GUI). Moreover, debug statements are incapable of capturing the overall object context in relation to inheritance, polymorphism and encapsulation at each execution point.
Another prior art approach to debugging for distributed objects is described in the U.S. patent application, Ser. No. 08/399,120, entitled "A System and Method For a Distributed Debugger For Debugging Distributed Application Programs," pending, filed Mar. 3, 1995, the disclosure of which is incorporated herein by reference. This prior art approach describes a system and method for debugging a distributed computer application in which the developer is at one host machine while the application being developed makes use of objects and object implementations which can be located on a different host machine unbeknownst to the developer. However, an approach for providing visualization of program code internal state in an OOL is not disclosed.
Another prior art approach to debugging more specifically directed to Java components is described in C. Marrin et al., "Multimedia and 3D Programming with Java Using VRML as Java's Multimedia Delivery Format," presented at JavaOnes.SM., Sun's 1997 Worldwide Java Developer Conferences.SM., Apr. 4, 1997. This prior art approach suggests integrating VRML and Java components to create three dimensional and multimedia content for use with a GUI, but does not describe an approach to debugging distributed interacting software components written in an OOL. JavaOnes.SM. and Sun's 1997 Worldwide Java Developer Conferences.SM. are service marks of Sun Microsystems, Inc., Mountain View, Calif.
Therefore, there is a need for a system and process for assisting a software developer in understanding the dynamic execution of program code, and particularly understanding distributed interacting software components written in an OOL. Such a system and process would be useful in performing dynamic debugging to help detect semantic errors at program runtime.
There is a further need for a system and process for visualizing the overall object context of related software components for use in debugging in conjunction with a GUI and particularly in debugging distributed interacting software components written in an OOL. Such a system and process would save time and resources during the software development process. Visualization is defined herein as the graphical representation of program data objects represented as visual objects associated with visual actions. Each visual action can be used for modifying the graphical appearance of its associated visual object in response to changes in the instantiations of the actual program data objects themselves.